cesium 实时传参更新模型的位置和姿态

您所在的位置:网站首页 cesium 实时轨迹 cesium 实时传参更新模型的位置和姿态

cesium 实时传参更新模型的位置和姿态

2024-06-06 19:58| 来源: 网络整理| 查看: 265

html

DOCTYPE html> sesium Demo var viewer = new Cesium.Viewer('cesiumContainer', { imageryProvider : Cesium.createTileMapServiceImageryProvider({ url : Cesium.buildModuleUrl('Assets/Textures/NaturalEarthII') //使用的是默认的离线地图离线地图 }), shouldAnimate : true, geocoder:false, homeButton:false, sceneModePicker:false, baseLayerPicker : false, //baseLayerPicker:false, //animation:false, //creditContainer:"credit" timeline:true, vrButton:false }); //测试数据 [时间,经度,纬度,高程] var myArray = [ [0,-119,35.1219512195122,0], [10,-118,35.2439024390244,48750], [20,-117,35.3658536585366,95000], [30,-116,35.4878048780488,138750], [40,-115,35.609756097561,180000], [50,-114,35.7317073170732,218750], [60,-113,35.8536585365854,255000], [70,-112,35.9756097560976,288750], [80,-111,36.0975609756098,320000], [90,-110,36.219512195122,348750], [100,-109,36.3414634146341,375000], [110,-108,36.4634146341463,398750], [120,-107,36.5853658536585,420000], [130,-106,36.7073170731707,438750], [140,-105,36.8292682926829,455000], [150,-104,36.9512195121951,468750], [160,-103,37.0731707317073,480000], [170,-102,37.1951219512195,488750], [180,-101,37.3170731707317,495000], [190,-100,37.4390243902439,498750], [200,-99,37.5609756097561,500000], [210,-98,37.6829268292683,498750], [220,-97,37.8048780487805,495000], [230,-96,37.9268292682927,488750], [240,-95,38.0487804878049,480000], [250,-94,38.1707317073171,468750], [260,-93,38.2926829268293,455000], [270,-92,38.4146341463415,438750], [280,-91,38.5365853658537,420000], [290,-90,38.6585365853659,398750], [300,-89,38.780487804878,375000], [310,-88,38.9024390243902,348750], [320,-87,39.0243902439024,320000], [330,-86,39.1463414634146,288750], [340,-85,39.2682926829268,255000], [350,-84,39.390243902439,218750], [360,-83,39.5121951219512,180000], [370,-82,39.6341463414634,138750], [380,-81,39.7560975609756,95000], [390,-80,39.8780487804878,48750], [400,-79,40,0] ]; //初始化模型 doScene('../Apps/SampleData/models/CesiumAir/Cesium_Air.gltf',false,0,0,500000,0,0,0); //用定时器模拟实时更新数据 var i = 0; var int = self.setInterval("clock()",20); function clock(){ var d = new Date(); var t = d.toLocaleTimeString(); document.getElementById("clock").value = t; var position = new Cesium.Cartesian3(); position = Cesium.Cartesian3.fromDegrees(myArray[i][1], myArray[i][2],myArray[i][3]);//(经度,纬度,高程) var gheading = Cesium.Math.toRadians(i*10);//俯仰角 var gpitch = Cesium.Math.toRadians(0);//偏行角 var groll = Cesium.Math.toRadians(0);//滚转角 var hpr = new Cesium.HeadingPitchRoll(gheading,gpitch,groll); var orientation = Cesium.Transforms.headingPitchRollQuaternion(position,hpr); //更新位置 viewer.entities.getById("myEntity").position = position; //更新姿态 viewer.entities.getById("myEntity").orientation = orientation; i++; if(i==myArray.length){ i=0; } }

cesiumFlight.js

/** * @function :根据传入参数实时更新模型的的位置和姿态 * @datetime:2019-2-22 11:07:51 * @author:一梦 * @param {*} modelURL 模型url * @param {*} isShowInfo 是否显示鼠标当前位置的的经度纬度高程信息 * @param {*} longitude 经度 * @param {*} latitude 纬度 * @param {*} height 高程 * @param {*} heading 俯仰角 * @param {*} pitch 偏航角 * @param {*} roll 滚转角 */ function doScene(modelURL,isShowInfo,longitude,latitude,height,heading,pitch,roll){ if(isShowInfo==true){ var showInfoHtml = document.getElementById("showInfo"); showInfoHtml.innerHTML = ''+ ''+ '经 度: '+ ''+ ''+ '维 度: '+ ''+ ''+ '视角高: km'+ ''+ ''; //经度纬度高程数据显示 var longitude_show = document.getElementById("longitude_show"); var latitude_show = document.getElementById("latitude_show"); var altitude_show = document.getElementById("altitude_show"); var canvas=viewer.scene.canvas; var ellipsoid = viewer.scene.globe.ellipsoid; var handler = new Cesium.ScreenSpaceEventHandler(canvas); handler.setInputAction(function(movement){ var cartesian = viewer.camera.pickEllipsoid(movement.endPosition,ellipsoid); if(cartesian){ var cartographic=viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian); var lat_String = Cesium.Math.toDegrees(cartographic.latitude).toFixed(4); var log_String = Cesium.Math.toDegrees(cartographic.longitude).toFixed(4); var alti_String = (viewer.camera.positionCartographic.height/1000).toFixed(2); longitude_show.innerHTML = log_String; latitude_show.innerHTML = lat_String; altitude_show.innerHTML = alti_String; } },Cesium.ScreenSpaceEventType.MOUSE_MOVE); } //指定位置 var position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height); //指定姿态 var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(heading),Cesium.Math.toRadians(pitch),Cesium.Math.toRadians(roll)); var orientation = Cesium.Transforms.headingPitchRollQuaternion(position,hpr); //viewer.entities.removeAll(); var entity = viewer.entities.add({ id:"myEntity", //自己指定的位置 position : position, //使用自己指定的姿态角 orientation:orientation, model : { uri : modelURL, //飞机模型 minimumPixelSize : 64 }, //Show the path as a pink line sampled in 1 second increments. path : { resolution : 1, material : new Cesium.PolylineGlowMaterialProperty({ glowPower : 1.0, color : Cesium.Color.YELLOW }), width : 1 } }); //设置视点 //viewer.zoomTo(viewer.entities, new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-90),7500000)); //隐藏版权信息 viewer._cesiumWidget._creditContainer.style.display = "none"; }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3